package com.kernel;

/****************************************
 * @name Reflect
 * @description 反射机制测试类
 * @author 黄彬恒
 * @since 2018/7/11
 ***************************************/
public class Reflect {
    /*
    * 获取Class对象的三种方式
    * 1.Object-->getClass();
    * 2.任何的数据类型(包括基本数据类型)都有一个“静态”的class属性
    * 3.通过Class类的静态方法:forName(String className)(常用)
    * */

    public static void main(String[] args) {
        /*第一种方式获取Class对象*/
        Student student1 = new Student();//这一new产生一个Student对象,一个Class对象。
        Class stuClass = student1.getClass();//获取Class对象
        System.out.println(stuClass.getName());

        /*第二种方式获取Class对象*/
        Class stuClass2 = Student.class;
        System.out.println(stuClass == stuClass2);//判断第一种方式获取的Class对象和第二种方式获取的是否是同一个

        /*第三种方式获取Class对象*/
        try {
            Class stuClass3 = Class.forName("com.kernel.Student");//注意此字符串必须是真实路径，就是带包名的类路径，包名.类名
            System.out.println(stuClass3 == stuClass2);//判断三种方式是否获取的是同一个Class对象
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

}
